// Copyright (c) 2010 SuccessFactors, Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//
//     * Redistributions of source code must retain the above
//       copyright notice, this list of conditions and the following
//       disclaimer.
//
//     * Redistributions in binary form must reproduce the above
//       copyright notice, this list of conditions and the following
//       disclaimer in the documentation and/or other materials
//       provided with the distribution.
//
//     * Neither the name of the SuccessFactors, Inc. nor the names of
//       its contributors may be used to endorse or promote products
//       derived from this software without specific prior written
//       permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
// COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
// OF THE POSSIBILITY OF SUCH DAMAGE.

package org.owasp.jxt.container;

import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.DomNodeList;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

/**
 * ContainerTest
 *
 * @author Jeffrey Ichnowski
 * @version $Revision: 13 $
 */
public class ContainerSuite extends TestCase {

//     private static final String[][] CONTAINERS = {
//         { "tomcat5x",
//           "http://www.apache.org/dist/tomcat/tomcat-5/v5.5.30/bin/apache-tomcat-5.5.30.zip" },
//         { "tomcat6x",
//           "http://www.apache.org/dist/tomcat/tomcat-6/v6.0.29/bin/apache-tomcat-6.0.29.zip" },
//     };

    public static Test suite(Class<? extends ContainerSuite> suiteClass, String containerType, String zipUrl) throws Exception {
        TestSuite suite = new TestSuite(suiteClass);
        return new CargoTestSetup(suite, containerType, zipUrl);
    }

    public void testExampleJXT() throws Exception {
        final WebClient webClient = new WebClient();
        final HtmlPage page = webClient.getPage("http://localhost:"+CargoTestSetup.PORT+"/jxt-example/example.jxt");

        assertEquals("Welcome to JXT", page.getTitleText());

        DomNodeList<HtmlElement> uls = page.getElementsByTagName("ul");
        assertTrue(!uls.isEmpty());

        HtmlElement ul = uls.get(0);
        DomNodeList<HtmlElement> lis = ul.getElementsByTagName("li");
        String[] items = "<,>,&,\",\',x,y,z".split(",");

        assertEquals(items.length, lis.size());

        for (int i=0 ; i<items.length ; ++i) {
            assertEquals("Item "+items[i], lis.get(i).getTextContent());
        }
    }

} // ContainerTest
